前幾天說明完了Pandas
跟Numpy
現在就來說說怎麼讓資料視覺化吧!
有句話說:
一張圖畫勝過千言萬語
這也是為什麼要做視覺化,視覺化是為了理解數據的變化過程,透過一堆數字我們無法直接看出結果,但透過圖形、圖表資料的呈現,就可以讓人明確的知道資料的走向和結果。
首先我們先 import :
import matplotlib.pyplot as plt
years = [1000,1500,1600,1700,1750,1800,1850,
1900,1950,1960,1965,1970,1975,1980,
1985,1990,1995,2000,2005,
2010,2015]
pops = [200,400,458,580,662,791,1000,
1262,1650,2525,2758,3018,3322,3682,
4061,4440,4853,5310,6520,
6930,7349]
使用plt.plot()
,將years,pops資料內容放到函數內:
plt.plot(years,pops)
接著要將圖表顯示出來:
plt.show()
要怎麼改變線條的顏色呢?
只需要在plt.plot()
內加入一個color
參數:
plt.plot(years,pops,color=(255/255,100/255,100/255))
會基本的將圖型顯示出來之後,可以新增label
,我們來寫個人口成長的圖表(資料純屬虛構):
先給資料:
years = [1950,1960,1965,1970,1975,1980,
1985,1990,1995,2000,2005,
2010,2015]
pops = [2.5,2.7,3,3.3,3.6,4.0,
4.4,4.8,5.3,6.1,6.5,6.9,7.3]
設定label
:
plt.title("Population Growth") # title
plt.ylabel("Population in billions") # y label
plt.xlabel("Population growth by year") # x label
在上面我們新增了title:Population Growth,
y座標:Population in billions
x座標:Population growth by year
顯示:
plt.show()
上面我們顯示了人口成長的圖表,假設我們想再加上死亡率:
新增一筆資料:
deaths = [1.2,1.7,1.8,2.2,2.5,2.7,2.9,3,3.1,3.2,3.5,3.6,4]
修改plt.plot()
的部分:
plt.plot(years,pops, color=(255/255,100/255,100/255))
plt.plot(years,deaths, '--', color=(100/255,100/255,255/255))
可以看到'--'
部分,這個是顯示顯條的樣子。
給予label:
plt.title("Population Growth") # title
plt.ylabel("Population in billions") # y label
plt.xlabel("Population growth by year") # x label
顯示資料:
plt.show()
OK!這樣就完成了兩條線的圖表了,要繼續增加只需要新增plt.plot()
就可以了。
或者:
lines = plt.plot(years,pops,years,deaths)
我們可以將它們寫在一起,都是一樣的!
能夠顯示多筆資料了,接下來看看圖型可以有哪些設置吧!
先用一樣的資料:
years = [1950,1960,1965,1970,1975,1980,
1985,1990,1995,2000,2005,
2010,2015]
pops = [2.5,2.7,3,3.3,3.6,4.0,
4.4,4.8,5.3,6.1,6.5,6.9,7.3]
deaths = [1.2,1.7,1.8,2.2,2.5,2.7,2.9,3,3.1,3.2,3.5,3.6,4]
lines = plt.plot(years,pops,years,deaths)
grid()
用來顯示網格:
plt.grid(True)
可以看到它後面多了網格!
接下來我們來設定線的mark
:
資料我們使用剛剛設定的:
years = [1950,1960,1965,1970,1975,1980,
1985,1990,1995,2000,2005,
2010,2015]
pops = [2.5,2.7,3,3.3,3.6,4.0,
4.4,4.8,5.3,6.1,6.5,6.9,7.3]
deaths = [1.2,1.7,1.8,2.2,2.5,2.7,2.9,3,3.1,3.2,3.5,3.6,4]
lines = plt.plot(years,pops,years,deaths)
在這裡我們將要繪的線都放到lines
這個變數內,再來就可以用plt.setp()
了:
plt.setp(lines,marker = "o")
上面我們先放入參數lines
,就是我們剛剛存放的變數lines
,color =
ㄧ樣可以設定資料顏色,不過這邊我不另外設定,marker = "o"
,設定點點的樣式。linewidth =
可以設定線的粗細,不過這邊我不另外設定。
執行結果:
此篇的最後我們結合Numpy
來繪出兩個不同速率的sin
波形吧:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 1.0, 0.01)
y1 = np.sin(4*np.pi*x)
y2 = np.sin(2*np.pi*x)
lines = plt.plot(x, y1, x, y2)
l1, l2 = lines
plt.setp(lines, linestyle='--')
plt.show()
參考資料來源:
matplotlib.org
請問最後With Numpy 程式碼倒數第三行
l1, l2 = lines
l1,l2這兩個參數用在哪?
我試著print(lines),結果得到:
[<matplotlib.lines.Line2D object at 0x000001EE1A2AB190>, <matplotlib.lines.Line2D object at 0x000001EE1A2AB1F0>]
所以plusone大大應該是把l1, l2分別分配給lines,
只是該動作應該是無意義,試著刪除l1, l2 = lines此行也沒有影響
瞭解
謝謝你的解說~